package com.altran.web.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.persistence.PersistenceException;

import com.altran.web.model.Concepto;
import com.altran.web.model.Consultor;
import com.altran.web.model.Dedicacion;

public abstract interface GestionDedicacionesServ {
	
	// --------------- Consultor ----------------
	void crearConsultor(String nombre, String telefono, String email)  throws PersistenceException;
	void modificarConsultor(int id_consultor, String nombre, String telefono, String email)  throws PersistenceException;
	Consultor buscarConsultorByNombre(String nombre);
	Consultor buscarConsultorById(int id);
	List<Consultor> obtenerConsultores();
	
	
	// --------------- Concepto ----------------
	void crearConcepto(String nombre)  throws PersistenceException;
	void modificarConcepto(int id_concepto, String nombre)  throws PersistenceException;
	List<Concepto> obtenerConceptoByConsultorByPeriod(int id_consultor, Date fechaInicio, int numDias);
	List<Concepto> obtenerTodosConceptos();
	
	// --------------- Dedicación ----------------
	void crearDedicacion(int id_consultor, int id_concepto, Date fechaInicio, Date fechaFin,
			int porcentajeDedicacionDiaria) throws PersistenceException;
	void modificarDedicacion(int id_dedicacion, Date fechaFinal, int porcentajeDedicacionDiaria)  throws PersistenceException;
	void eliminarDedicacion(int id_dedicacion);
	List<Dedicacion> obtenerDedicacionesByConsultorByPeriod(
			int idConsultor, Date dateIni, int numDias);
	Map<String, Integer> mapearPeriodoByConsultor(
			List<Dedicacion> dedicaciones, Date fechaInicio, int numDias);
	List<Dedicacion> obtenerDedicacionesByConsultorByConceptoByPeriod(
			int id_consultor, int id_concepto, Date dateIni, int numDias);
	Map<String, Integer> mapearPeriodoByConsultorByConcepto(
			List<Dedicacion> dedicaciones, Date fechaInicio, int numDias);
	
}
